﻿using System.Diagnostics;
using RealidadeAumentada.Entidades;

namespace RealidadeAumentada.Servicos.Analise.Histograma
{
    public class LimiteQuadrado
    {
        private int _porcentagem;

        public LimiteQuadrado(int i_porcentagem)
	    {
            Debug.Assert(0 <= i_porcentagem && i_porcentagem <= 50);
            this._porcentagem = i_porcentagem;
	    }	
	    public int getThreshold(EHistograma i_histogram)
	    {
		    int n=i_histogram.length;
		    int sum_of_pixel=i_histogram.total_of_data;
		    int[] hist=i_histogram.data;
		    int th_pixcels = sum_of_pixel * this._porcentagem / 100;
		    int th_wk;
		    int th_w, th_b;

		    th_wk = th_pixcels;
		    for (th_b = 0; th_b < n-2; th_b++) {
			    th_wk -= hist[th_b];
			    if (th_wk <= 0) {
				    break;
			    }
		    }
		    th_wk = th_pixcels;
		    for (th_w = n-1; th_w > 1; th_w--) {
			    th_wk -= hist[th_w];
			    if (th_wk <= 0) {
				    break;
			    }
		    }
		    return (th_w + th_b) / 2;
	    }
    }
}
